//version 1.0@Xenon_x


function addToolsToCKEDITOR(instanceId, ...tools) {
		// 		console.log("Вызов с параметрами ", arguments);
		if(!window.CKEDITOR) {console.warn("Не найден объект редактора CKEDITOR"); return;}
		if(!tools) {console.warn("Не передана утилита"); return;}
		if(!CKEDITOR.instances[instanceId]) {console.warn("Не найден экземпляр редактора " + instanceId); return;}
		CKEDITOR.on('instanceReady', e=>{
			if(e.editor.name != instanceId) return;
			if(e.editor.commands[tools[0].name]) {
				// Тут запускаем инициализацию плагинов для экземпляра редактора
				init();
				return;
			}
			CKEDITOR.instances[instanceId].destroy(1);
			let editor = CKEDITOR.replace(instanceId);
			for(let i = 0; i < tools.length; i++) {
				editor.addCommand(tools[i].name, {
					exec: tools[i].command.bind(tools[i], tools[i].env)
				});
				editor.ui.addButton(tools[i].name, {
					label: tools[i].label,
					command: tools[i].name,
					toolbar: tools[i].toolbar.toLowerCase(),
					icon: tools[i].icon
				});
			}
			function init() {
				let editor = CKEDITOR.instances[instanceId];
				for(let i = 0; i < tools.length; i++) {
					try{
						tools[i].init.call(tools[i], tools[i].env, editor);
						console.log(`Tool ${tools[i].name} initialized`);
					} catch(e) { console.error('Ошибка инициализации инструмента', e); return}
				}
			}
		});
		CKEDITOR.instances[instanceId].destroy(true);
		CKEDITOR.replace(instanceId);
}
export {addToolsToCKEDITOR}
/*
//Пример использования
let tool = {
	name: "Slider2",
	label: "Slider2",
	toolbar: 'insert,99',
	icon: 'https://avatars1.githubusercontent.com/u/5500999?v=2&s=16',
	form: '',
	env: {},
	command: function(env, editor) {console.log(env, editor)},
	init: function(env, editor) {}
}
window.addEventListener('load', ()=>addToolsToCKEDITOR('message', tool, toolN));
*/